doc.posFromIndex(this._validLead),
doc.posFromIndex(totalLength - this._validTrail));
this._retrievedText.slice(0, this._validLead) +
this._retrievedText.slice(this._retrievedText.length - this._validTrail);
return this._retrievedText;
private _docChanges(docChanges: CodeMirror.EditorChange[]) { var doc = this.textDoc.doc;
var lineCount = doc.lineCount();
var newTotalLength = doc.indexFromPos({ ch: doc.getLine(lineCount - 1).length
for (var i = 0; i < docChanges.length; i++) { var removedLength = totalLength(ch.removed);
var addedLength = totalLength(ch.text);
var fromIndex = doc.indexFromPos(ch.from);
var trail = newTotalLength - fromIndex - addedLength;
deltaLength += addedLength - removedLength;
changeLead = Math.min(changeLead, fromIndex);
changeTrail = Math.min(changeTrail, trail);
if (this._validLead < 0) { this._validLead = changeLead;
this._validTrail = changeTrail;
this._validLead = Math.min(this._validLead, changeLead);
this._validTrail = Math.min(this._validTrail, changeTrail);
mid: this._totalLength - changeLead - changeTrail,
changeSummary.newmid = changeSummary.mid + deltaLength;
if (this.textDoc.onChanges) { this.textDoc.onChanges(docChanges, changeSummary);
this._totalLength = newTotalLength;
this._scrollerModel.docChanges(docChanges);
this._saveTimer.interval = (this.moduleObj && this.moduleObj.saveDelay) || saveDelay;